Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Управление серверными брандмауэрами

В этом упражнении вы будете управлять доступом к системным службам, изменяя правила системного брандмауэра с помощью firewalld.

Результаты

Вы сможете настроить правила брандмауэра для управления доступом к службам.

Войдите на workstation как пользователь student с паролем student.

На workstation выполните команду lab netsecurity-firewalls start. Эта команда запускает подготовительный сценарий, который проверяет доступность хоста servera в сети.

[student@workstation ~]$ lab netsecurity-firewalls start
  1. На workstation с помощью SSH войдите на хост servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
    
  2. Убедитесь, что в системе servera установлены пакеты httpd и mod_ssl. Эти пакеты предоставляют веб-сервер Apache, который вы будете защищать с помощью брандмауэра, и необходимые расширения для раздачи контента веб-сервером по SSL.

    [student@servera ~]$ sudo yum install httpd mod_ssl
    [sudo] password for student: student
    ...output omitted...
    Is this ok [y/N]: y
    ...output omitted...
    Complete!
    
  3. На servera создайте файл /var/www/html/index.html как пользователь student. Добавьте одну строку со следующим текстом: I am servera.

    [student@servera ~]$ sudo bash -c \
    "echo 'I am servera.' > /var/www/html/index.html"
    
  4. Запустите и включите службу httpd в системе servera.

    [student@servera ~]$ sudo systemctl enable --now httpd
    Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
    
  5. Выйдите с servera.

    [student@servera ~]$ exit
    logout
    Connection to servera closed.
    [student@workstation ~]$
    
  6. С машины workstation попробуйте получить доступ к веб-серверу на servera, используя порт открытого текста 80/TCP и порт с SSL-инкапсуляцией 443/TCP. Обе попытки должны завершиться ошибкой.

    1. Эта команда не должна выполниться:

      [student@workstation ~]$ curl http://servera.lab.example.com
      curl: (7) Failed to connect to servera.lab.example.com port 80: No route to host
      
    2. Эта команда также не должна выполниться:

      [student@workstation ~]$ curl -k https://servera.lab.example.com
      curl: (7) Failed to connect to servera.lab.example.com port 443: No route to host
      
  7. Войдите на servera как пользователь student.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
    
  8. На servera убедитесь, что служба nftables замаскирована, а служба firewalld включена и работает.

    1. Определите, имеет ли служба nftables статус masked.

      [student@servera ~]$ sudo systemctl status nftables
      [sudo] password for student: student
      ● nftables.service - Netfilter Tables
         Loaded: loaded (/usr/lib/systemd/system/nftables.service; disabled; vendor preset: disabled)
         Active: inactive (dead)
           Docs: man:nft(8)
      

      Результаты показывают, что служба nftables отключена и неактивна, но не замаскирована. Выполните следующую команду, чтобы замаскировать службу.

      [student@servera ~]$ sudo systemctl mask nftables
      Created symlink /etc/systemd/system/nftables.service → /dev/null.
      
    2. Убедитесь, что статус службы nftables ― masked.

      [student@servera ~]$ sudo systemctl status nftables
      ● nftables.service
         Loaded: masked (Reason: Unit nftables.service is masked.)
         Active: inactive (dead)
      
    3. Убедитесь, что статус службы firewalld ― enabled и running.

      [student@servera ~]$ sudo systemctl status firewalld
      ● firewalld.service - firewalld - dynamic firewall daemon
         Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
         Active: active (running) since Wed 2019-05-22 15:36:02 CDT; 5min ago
           Docs: man:firewalld(1)
       Main PID: 703 (firewalld)
          Tasks: 2 (limit: 11405)
         Memory: 29.8M
         CGroup: /system.slice/firewalld.service
                 └─703 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
      
      May 22 15:36:01 servera.lab.example.com systemd[1]: Starting firewalld - dynamic firewall daemon...
      May 22 15:36:02 servera.lab.example.com systemd[1]: Started firewalld - dynamic firewall daemon.
      
    4. Выйдите с servera.

      [student@servera ~]$ exit
      logout
      Connection to servera closed.
      [student@workstation ~]$
      
  9. С машины workstation откройте Firefox и войдите на веб-консоль, запущенную на servera, чтобы добавить службу httpd для зоны сети public.

    1. В браузере Firefox перейдите по адресу https://servera.lab.example.com:9090, чтобы открыть веб-консоль. Примите самоподписанный сертификат, используемый servera, добавив его в исключения.

    2. Установите флажок Reuse my password for privileged tasks, чтобы получить права администратора.

      Войдите в систему как пользователь student с паролем student.

    3. Выберите Networking на панели навигации слева.

    4. Щелкните ссылку Firewall на главной странице Networking.

    5. Нажмите кнопку Add Services... в правой верхней части страницы Firewall.

    6. На странице Add Services прокрутите список или воспользуйтесь полем поиска Filter Services, чтобы найти службу Secure WWW (HTTPS), и установите флажок рядом с ней.

    7. Нажмите кнопку Add Services в правой нижней части страницы Add Services.

  10. Вернитесь на терминал на workstation и проверьте свою работу. Для этого попробуйте посмотреть содержимое веб-сервера servera.

    1. Эта команда не должна выполниться:

      [student@workstation ~]$ curl http://servera.lab.example.com
      curl: (7) Failed to connect to servera.lab.example.com port 80: No route to host
      
    2. Эта команда должна выполниться:

      [student@workstation ~]$ curl -k https://servera.lab.example.com
      I am servera.
      

    Примечание

    В случае использования Firefox для подключения к веб-серверу появится запрос подтверждения сертификата хоста, если он успешно пройдет через брандмауэр.

Конец

На workstation запустите сценарий lab netsecurity-firewalls finish, чтобы закончить упражнение.

[student@workstation ~]$ lab netsecurity-firewalls finish

Упражнение завершено.